//目录extend是固定写法 它是eggjs 框架里面的执行期上下文ctx 增加扩展方法

const nodeFetch = require('node-fetch');
//封装请求方法
import { IHttpGetParams } from '../../typings';

module.exports = {
  //<void> 是resolve()执行返回的值 因为不确定值所有定义void
  httpGet(options: IHttpGetParams): Promise<void> {
    //请求示例：http://v.juhe.cn/jztk/query?subject=1&model=c1&key=您申请的appKey&testType=rand
    const { url, data, success, fail } = options;

    //从app里获取自定义的utils和config
    const { utils, config } = this.app;

    //通过Node中间层请求后端接口
    //config.BASE_URL + url
    //http://v.juhe.cn/jztk + /query + model=c1&key=xxx
    return (
      nodeFetch(
        config.BASE_URL + url + utils.formatParams(data, config.APP_KEY)
      )
        //json化数据
        .then((res) => res.json())
        //抛出成功后的数据
        .then((data) => success(data))
        //抛出失败的错误
        .catch((err) => fail(err))
    );
  }
};
